package com.titan.core.base;

import java.io.IOException;
import java.util.Map;

import com.titan.core.utils.object.PropertyDescriptor;
import com.titan.core.utils.object.Variant;

/**
 * @author 周成功
 * @email 86898837@qq.com
 * @date 2020年02月20日
 */
public abstract class BaseDomain implements java.io.Serializable, Cloneable {
//    private static final long serialVersionUID = 1L;
//    private Integer id;   // 主键
//    private String create_name;  // '创建人',
//    private Date create_dt;  //  '创建时间',
//    private String update_name;  // '最后修改人',
//    private Date update_dt;  //  '最后修改时间',
//    private Integer close_flag;   // '关闭标记, 0正常,1关闭',
//    private String close_name;   // '关闭人',
//    private Date close_dt;   // '关闭时间',
    
    public Object clone() {
        Object o = null;
        try {
            o = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return o;
    }
    
    
    public abstract Variant<?> getValue(String property);
    public abstract void setValue(String property, Object value) throws IOException;
    public abstract Map<String,Variant<?>> toMapVariant();
    public abstract Map<String,Object> toMap();
    public abstract String[] generateProperties();
    public abstract PropertyDescriptor generateProperties(String property);

}

